package com.ebei.admin.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.ebei.admin.model.entity.SysOrg;
import com.ebei.common.util.Query;
import com.ebei.common.vo.UserVO;
import org.springframework.retry.backoff.ObjectWaitSleeper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 部门管理mapper接口
 *
 * @author crazypenguin
 * @version 1.0
 * @created 2018/4/17
 */
@Repository
public interface SysOrgMapper extends BaseMapper<SysOrg> {

    /**
     * 关联dept——relation
     *
     * @param delFlag 删除标记
     * @return 数据列表
     */
    List<SysOrg> selectDeptDtoList(String delFlag);

    /**
     * 删除部门关系表数据
     *
     * @param id 部门ID
     */
    void deleteDeptRealtion(Integer id);

    /**
     * 查询子节点
     *
     * @param levelNum
     * @return
     */
    List<SysOrg> selectChildren(String levelNum);

    /**
     * 新增之后将新增的id返回
     */
    void insertReturnId(SysOrg sysOrg);

    /**
     * 查询最新的levelNum
     *
     * @return
     */
    public String nextLevelNum();

    /**
     * 根据LevelNun查询园区
     *
     * @param levelNum
     * @return
     */
    Map<String, Object> findByLevelAndType(String levelNum, String type);

    /**
     * 根据组织id 查询旗下所有岗位
     *
     * @param query
     * @param map
     * @return
     */
    List<Map<String, Object>> findPositionsByOrgId(Query<Map> query, Map<String, Object> map);

    /**
     * 根据用户id查询公司(组织)
     *
     * @param userId
     * @return
     */
    SysOrg findOrgByUserId(Integer userId);

    /**
     * 根据code查询positionId
     *
     * @param code
     * @return
     */
    Integer findPositionByCode(String code);

    /**
     * 获取id,name,和parentId
     */
    List<Map<String, Object>> findElements();

    /**
     * 获取最大levelNum和orderNum
     *
     * @param params
     * @return
     */
    Map<String, Object> getMaxNumByParams(Map<String, Object> params);

    /**
     * 根据组织id查询相应岗位的人
     *
     * @param orgId
     * @return
     */
    List<Map<String, Object>> findUserByOrgId(Integer orgId);

    /**
     * 获取组织架构列表
     * @param params
     * @return
     */
    List<SysOrg> getDeptList(Map<String, Object> params);

}